#!/bin/bash
:<<!
命令变量
!
tmp1=`pwd`
echo "($LINENO) "$tmp1
tmp2=$(pwd)
echo "($LINENO) "$tmp2

:<<!
普通变量
!
a=aaa
echo "($LINENO) "$a
b='bbb${a}bbb'
echo "($LINENO) "$b
c="ccc${a}ccc"
echo "($LINENO) "$c

:<<!
内置变量
!
# 获取指定参数
echo "($LINENO) ""脚本名为: $0"
# 获取参数个数
echo "($LINENO) ""获取到参数个数为: $#"
# 获取上一次执行结果
pwd
echo "($LINENO) "$?
# 获取随机字符串
echo "($LINENO) "`echo $RANDOM | md5sum | awk '{print $1}'`
# 截取字符串
str='hello world'
echo "($LINENO) "${str:4:8}
echo "($LINENO) "${str: -8}

:<<!
条件判断
!
[ 1 = 1 ]
echo "($LINENO) "$?
[ 2 = 1 ]
echo "($LINENO) "$?

:<<!
逻辑条件
!
[ 1 = 1 ] && echo "($LINENO) ""条件成立"
[ 2 = 1 ] || echo "($LINENO) ""条件不成立"

:<<!
文件条件
!
[ -f base.sh ] || echo "($LINENO) ""不是文件" 
[ -d ext ] || echo "($LINENO) ""不是目录" 
[ -x base.sh ] || echo "($LINENO) ""不是可执行文件"

:<<!
数字条件
!
[ $# -eq 2 ] && echo "($LINENO) ""$0 脚本开始执行，需要两个参数"
[ $# -ne 2 ] && echo "($LINENO) ""$0 脚本开始执行，需要不是两个参数"

:<<!
字符串
!
a="$1"
b="$2"
[ "${a}" != "${b}" ] && echo "($LINENO) ""您输入的两个参数不一样"

:<<!
if语句
!
if [ "$1" = "start" ]
then
    echo "($LINENO) ""启动 $0 服务"
elif [ "$1" = "stop" ]
then
    echo "($LINENO) ""关闭 $0 服务"
elif [ "$1" = "restart" ]
then
    echo "($LINENO) ""重启 $0 服务"
else
    echo "($LINENO) ""参数错误, $0 脚本使用方式： $0 [ start | stop | restart ]"
fi

:<<!
case语句
!
case $1 in
    "start" )
        echo "($LINENO) ""启动 $0 服务"
    ;;
    "stop" )
　　　　echo "($LINENO) ""关闭 $0 服务"
　　;;
    "restart" )
	   echo "($LINENO) ""重启 $0 服务"
    ;;
    * )
	   echo "($LINENO) ""参数错误, $0 使用方式: $0 [ start | stop | restart ]"
    ;;
esac

:<<!
for循环打印
!
file_name=`ls ./`
for x in ${file_name}
do
	echo "($LINENO) ""ls -l后,发现一个文件${x}"
done

:<<!
seq打印
!
num=$(seq 10)
for i in  ${num}
do
 	echo "($LINENO) ""获取的数字 ${i}"
done

:<<!
while循环
!
a=1
while [ "${a}" -lt 10 ]
do
  echo "($LINENO) ""a的值为 ${a}"
  a=$((a+1))
done

:<<!
until
!
a=10
until [ "${a}" -lt 1 ]
do
    echo "($LINENO) ""a的值是 ${a}"
    let a=a-1
done

:<<!
无参函数
!
func1(){
 echo "($LINENO) ""无参函数使用!"
}
func1
func1
func1

:<<!
传参函数
!
func(){
    echo "($LINENO) ""这是传参函数${1}"
}
func "有气质"
func "漂亮"
func "方便"
func "好看"

:<<!
返回值函数
!
func(){
    tmp=$(($1+$2))
    echo "($LINENO) ""${tmp}"
}
# 直接调用函数
func 11 12
res=$(func 22 23)
echo "($LINENO) ""res=${res}"

:<<!
求和
!
lines=`awk '{print $2}' ext/base/sum.txt`
tmp=0
for line in ${lines}
do
    echo "($LINENO) "每次的输出结果: ${line}
    tmp=$((tmp+${line}))
done
echo "($LINENO) "输出的总和: ${tmp}

:<<!
批量复制
!
src_dir=ext/base/src
desc_dir=ext/base/desc

files=`ls ${src_dir}/`
for file in ${files}
do
    src_name=${src_dir}/${file}
    desc_name=${desc_dir}/${file%.*}.txt
    echo "($LINENO) "${src_name}" -> "${desc_name}
    cat ${src_name} > ${desc_name}
done
